/**
 * API 接口相关类型定义
 */

/**
 * 通用API响应格式
 */
export interface ApiResponse<T = any> {
  code: number;
  data: T;
  message: string;
  success: boolean;
}

/**
 * 分页数据响应格式
 */
export interface PaginatedData<T = any> {
  list: T[];
  total: number;
  pages: number;
}

/**
 * 分页请求参数
 */
export interface PaginationParams {
  page_num?: number;
  page_size?: number;
  keyword?: string;
  sortField?: string;
  sortOrder?: "ascend" | "descend";
  [key: string]: any;
}

/**
 * API 错误类型
 */
export enum ErrorCode {
  /**
   * 成功
   */
  SUCCESS = 0,
  /**
   * 未授权
   */
  UNAUTHORIZED = 401,
  /**
   * 禁止访问
   */
  FORBIDDEN = 403,
  /**
   * 资源未找到
   */
  NOT_FOUND = 404,
  /**
   * 服务器内部错误
   */
  SERVER_ERROR = 500,
  /**
   * 参数错误
   */
  PARAM_ERROR = 400,
  /**
   * 请求超时
   */
  TIMEOUT = 504,
  /**
   * 网络错误
   */
  NETWORK_ERROR = -1,
}

/**
 * 请求配置扩展选项
 */
export interface RequestOptions {
  /**
   * 是否不自动显示错误信息
   */
  hideErrorMessage?: boolean;
  /**
   * 自定义错误消息
   */
  errorMessage?: string;
  /**
   * 是否不自动显示加载状态
   */
  hideLoading?: boolean;
  /**
   * 加载提示文字
   */
  loadingMessage?: string;
  /**
   * 自动重试次数
   */
  retries?: number;
  /**
   * 请求Token
   */
  requestToken?: string;
  /**
   * 是否跳过鉴权
   */
  skipAuth?: boolean;
  /**
   * 请求ID，用于取消请求
   */
  requestId?: string;
}
